float4x4 WorldViewProjection;
float4x4 World;

// Structs
struct VS_INPUT
{
    float4 position				: POSITION;
	float3 normal				: NORMAL;
	float2 textureCoords		: TEXCOORD0;
};

struct VS_OUTPUT
{
    float4 position				: POSITION;
	float2 textureCoords		: TEXCOORD0;
	float3 positionW			: TEXCOORD1;
	float3 normalW				: TEXCOORD2;
};

// Shaders
VS_OUTPUT main(VS_INPUT In)
{
    VS_OUTPUT Out = (VS_OUTPUT)0;

    Out.position = mul(In.position, WorldViewProjection);
	Out.textureCoords = In.textureCoords;
	Out.positionW = mul(In.position, World).xyz;
	Out.normalW = mul(In.normal, (float3x3)World);
    return Out;
}
